APG4b 二章 複雑な計算処理の書き方
2.01.ループの書き方と範囲for文
範囲for文というのがある. 配列などのコンテナを扱うためのfor文で, 変数xに配列aから順に取り出して処理する, などが簡潔に書ける
コンテナ: 謎. 配列(vector)や文字列(string)がその一部
問題は普通のfor文で書いた. 特筆すべき点はない
2.02.多重ループ
特に知見はない. C++の書き方に慣れるのに良いなぁ, という程度
2.03.多次元配列
二重になっている: vector<vector<int>> data(3, vector<int>(4));
char型の部分で間違えて""を使っていた. ''に修正
配列の扱いでひたすらエラーを吐かれた
試合の結果が入ったA, Bの配列は一次元配列なのに二次元配列として処理していた. なぜだ...
その後も配列の各値を処理する際, 条件式の数値がおかしい, スコープがずれているなどで引っかかった
久しぶりに全くAIに任せずにコードを書いたので, それが原因か? やはり自分で考えて書かないと, 能力が衰えるな
エラー解消に40分かかっている. おかしいよ
問題を一つずつ分解し, 丁寧に考えればよかった
今度から気をつけよう
C++の書き方に慣れていないのもあるのか?
2.04.参照
文字通り参照する
ポインタを作る. 何と説明すれば良いのか
参照は, 変数aがある時, aの値を使うbを作れる. 正確にはaの値が入ったメモリの位置をbが保存するので, 値を複製することなくやり取りでき, メモリ効率が良い...?
参照の複製の使い所が想像つかない
参照の使い方として, 参照渡しは聞いたことがある
C言語の講義で聞いた
関数の引数として変数そのものではなく, 参照を渡す
前者は値渡しと呼ぶ. 引数の値は関数内でコピーされる
参照の場合, 値渡しと異なり, 関数で操作したい値の場所が渡されるので, コピーなどせず操作すれば良い
特にコピーに時間のかかる, 配列などのデータで有効みたい
他に関数から複数の結果が得られるのも利点らしい
通常は返り値は一つしか渡せない
参照を使えば, 引数は増えるが返り値ではなく, 該当部分に直接出力できる
参照先を指定して初期化する, 参照先は変更できない点に注意
範囲for文での使い方が面白い. 面倒がなくなるのは良いことだ
!右辺値参照が説明されていない
問題について
参照に関する間違いはなかった
基本的な型を間違えていた. そもそも型宣言を忘れていたし, 配列に至っては二重の配列を期待しているのに普通の配列だと思ってvector<int>にしていた. 他は特に問題ない
2.05.再帰関数
終了条件とそれに基づく実行内容とがあり, その上で反復する内容がある
実行時間の効率は良かったと思うが, メモリ効率はすこぶる悪かったような...
次は再帰関数の実装法から
2.06.計算量